package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name string
	Age  int
}

type Result struct {
	Code    int    `json:"code"`
	Message string `json:"msg"`
}

func setData(res *Result) {
	res.Code = 500
	res.Message = "服务器错误"
}

func toJsonStringify(res *Result) []byte {
	jsons, err := json.Marshal(res)
	if err != nil {
		fmt.Println("json marshal error:", err)
	}
	
	return jsons
}

func toJson(data []byte) Result {
	var res2 Result
	err := json.Unmarshal(data, &res2)
	if err != nil {
		fmt.Println("json unmarshal error:", err)
	}
	return res2
}

func main() {
	// 声明结构体
	var p1 Person
	p1.Name = "Tom"
	p1.Age = 30
	p2 := Person{Name: "Aaron", Age: 32}
	// 匿名结构体
	p3 := struct {
		Name string
		Age  int
	}{Name: "匿名", Age: 33}
	fmt.Println(p1, p2, p3)

	// 处理JSON
	var res1 Result
	setData(&res1)
	fmt.Println("jsonStringify => ", string(toJsonStringify(&res1))) // 序列化
	fmt.Println("json => ", toJson(toJsonStringify(&res1)) ) // 反序列化
}